import { BasicColumn, FormSchema } from '@/components/Table';
import { h, ref } from 'vue';
import { Tag } from 'ant-design-vue';
import {VxeFormItemProps, VxeGridPropTypes} from "@/components/VxeTable";
import util from "@/utils/util";
import { deptSelectList } from '@/api/sys/iot';
import dayjs from 'dayjs';

/**
 * 计算两个时间字符串相差的小时数（含小数，处理精度和时间顺序）
 * @param {string} timeStrA - 时间字符串A
 * @param {string} timeStrB - 时间字符串B
 * @param {number} [decimal=2] - 保留小数位数（默认2位）
 * @returns {number} 相差小时数（正数）
 */
const calculateHourDiff = (timeStrA, timeStrB, decimal = 2) => {
  // 解析时间（若解析失败，返回 NaN 提示错误）
  const timeA = dayjs(timeStrA);
  const timeB = dayjs(timeStrB);
  if (!timeA.isValid() || !timeB.isValid()) {
    console.error('时间字符串格式错误，请检查！');
    return NaN;
  }

  // 计算毫秒差（取绝对值，确保结果为正）
  const msDiff = Math.abs(timeB.diff(timeA, 'ms'));
  // 转换为小时并控制小数精度
  const hoursDiff = Number((msDiff / 3600000).toFixed(decimal));

  return hoursDiff;
};

// 测试调用
// const diff1 = calculateHourDiff('2024-05-20 08:30:00', '2024-05-20 10:45:30');
// console.log(diff1); // 输出：2.26（保留2位小数）


/**
 * 计算系统上班时长
 * @param time
 */
function countShichang(field,e){
  console.log("---field::",field);
  let row=e.row;

}
// const diff2 = calculateHourDiff('2024-05-21 14:00', '2024-05-20 10:30', 1);
// console.log(diff2); // 输出：27.5（保留1位小数，自动处理时间顺序）



function getTimeVal(obj){
  let val=`${obj.cheJianName}-${obj.typeValue} ${obj.shangwuUpTxt}-${obj.shangwuDownTxt} 中午截至${obj.zhongwuLimitTxt} ${obj.xiawuUpTxt}-${obj.xiawuDownTxt} 
   下午截至${obj.xiawuLimitTxt} ${obj.wanshangUpTxt}-${obj.wanshangDownTxt?obj.wanshangDownTxt:'无'} ${obj.remark}`;
  return val;
}
/**
 */
export const vxeTableColumns: VxeGridPropTypes.Columns = [
  {
    title: '序号',
    type: 'seq',
    width: '40',
    align: 'center',
  },
  {
    title: '车间小组',
    field: 'groupName',
    showOverflow: 'title',
    width: 120,
    align: 'center',
  },
  {
    title: '姓名',
    field: 'userName',
    showOverflow: 'title',
    width: 80,
    align: 'center',
  },
  {
    title: '打卡日期',
    field: 'addDate',
    align: 'center',
    width: 75,
    formatter: ({ cellValue, row, column }) => {
      let val = util.formatDate(new Date(cellValue));
      return val;
    },
  },
  {
    title: '考勤结果',
    field: 'xtShiJianObj',
    showOverflow: 'title',
    formatter: ({ cellValue, row, column }) => {
      let val = "";
      if(cellValue){
        val = cellValue['考勤结果'];
      }
      return val;
    },
    width: 80,
    align: 'center',
  },
  {
    title: '备注',
    field: 'remark',
    showOverflow: 'title',
    width: 80,
    align: 'center',
  },
  {
    title: '状态',
    field: 'kqApproveStatusValue',
    showOverflow: 'title',
    width: 80,
    align: 'center',
  },
  {
    title: '钉钉打卡时间',
    field: 'ddTimes',
    width: 300,
    align: 'center',
  },
  {
    title: '考勤规则',
    field: 'kqRule',
    formatter: ({ cellValue, row, column }) => {
      let v="";
      if(!cellValue){
        return v;
      }
      v=getTimeVal(cellValue);
      return v;
    },
    width: 300,
    align: 'center',
  },
  {
    title: '系统上午上班打卡',
    field: 'shangwuUpTxt',
    width: 60,
    align: 'center',
  },

  {
    title: '系统上午下班打卡',
    field: 'shangwuDownTxt',
    width: 60,
    align: 'center',
  },
  {
    title: '系统下午上班打卡',
    field: 'xiawuUpTxt',
    width: 60,
    align: 'center',
  },
  {
    title: '系统下午下班打卡',
    field: 'xiawuDownTxt',
    width: 60,
    align: 'center',
  },
  {
    title: '系统晚上上班打卡',
    field: 'wanshangUpTxt',
    width: 60,
    align: 'center',
  },
  {
    title: '系统晚上下班打卡',
    field: 'wanshangDownTxt',
    width: 60,
    align: 'center',
  },
  {
    title: '系统统计时长',
    field: 'xtQuantianShichang',
    width: 60,
    align: 'center',
  },
  {
    title: '修改上午上班打卡',
    field: 'shangwuUpTxt1',
    width: 60,
    align: 'center',
  },

  {
    title: '修改上午下班打卡',
    field: 'shangwuDownTxt1',
    width: 60,
    align: 'center',
  },
  {
    title: '修改下午上班打卡',
    field: 'xiawuUpTxt1',
    width: 60,
    align: 'center',
  },
  {
    title: '修改下午下班打卡',
    field: 'xiawuDownTxt1',
    width: 60,
    align: 'center',
  },
  {
    title: '修改晚上上班打卡',
    field: 'wanshangUpTxt1',
    width: 60,
    align: 'center',
  },
  {
    title: '修改晚上下班打卡',
    field: 'wanshangDownTxt1',
    width: 60,
    align: 'center',
  },
  {
    title: '修改后时长',
    field: 'xtQuantianShichang1',
    width: 60,
    align: 'center',
  },
  // {
  //   width: 60,
  //   title: '操作',
  //   align: 'center',
  //   field: '',
  //   slots: { default: 'action' },
  //   fixed: 'right',
  // },
];




export const vxeTableFormSchema: VxeFormItemProps[] = [
  {
    span: 5,
    field: 'userName',
    title: '姓名',
    itemRender: {
      props: {
        placeholder: '名称',
      },
      name: 'AInput',
    },
  },
  {
    span: 5,
    field: 'groupName',
    title: '小组',
    itemRender: {
      props: {
        placeholder: '小组名称',
      },
      name: 'AInput',
    },
  },
  {
    span: 5,
    field: 'addDate',
    title: '日期',
    itemRender: {
      props: {
        placeholder: '打卡日期',
      },
      name: 'AInput',
    },
  },
  {
    span: 5,
    field: 'month',
    title: '月份',
    itemRender: {
      defaultValue:util.getCurrentMonth(),
      props: {
        valueFormat: 'YYYY-MM', //-DD
      },
      name: 'AMonthPicker',
    },
  },
  {
    span: 5,
    itemRender: {
      name: 'VxeButtonGroup',
      options: [
        { type: 'reset', content: '重置' },
        { type: 'submit', content: '查询', status: 'primary' },
      ],
    },
  },
];


export const formSchema: FormSchema[] = [

  {
    field: 'userName',
    label: '姓名',
    component:"Input",
    componentProps:{
      disabled:true,
    },
    required: true,
  },
  {
    field: 'addDate',
    label: '打卡日期',
    component:"Input",
    componentProps:{
      disabled:true,
    },
    required: true,
  },

  {
    field: 'shangwuShangBan',
    label: '钉钉上午上班打卡',
    component:"Input",
    componentProps:{
      disabled:true,
    },
    required: false,
  },
  {
    field: 'xtShangwuShangbanTxt',
    label: '系统上午上班打卡',
    component:"DatePicker",
    componentProps:{
      // type:"time",
      // size:"mini",
      // editable:false
    },
    required: false,
  },
  {
    field: 'remark',
    label: '备注',
    component:"Input",
    required: false,
  },

];
